#ifndef NV_STATEMANAGER_H
#define NV_STATEMANAGER_H

#include <vector>
#include "Headers.h"

class GameState;

class StateManager
{
public:
	StateManager(int width, int height, int bpp, std::string title);
	~StateManager();

	void getInput();
	void update();
	void draw();
	void regulateFPS();

	void changeState(GameState* state);
	void pushState(GameState* state);
	void popState();

	sf::RenderWindow& getWindow();
	bool isOpen();
	void quit();

private:
	sf::RenderWindow gameWindow;
	
	std::vector<GameState*> m_states;

	sf::Clock fpsClock;

	bool m_running;
};

#endif